home *** CD-ROM | disk | FTP | other *** search
Wrap
;------------------------------------------------------------------------------ ; .ss. ; `²²' ; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs. ; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,. ; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b. ; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$ ; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²' ; .sS²°$$$²²°"' d²°' ; .$$² .$$' ; $$$.,d$$' ; `²S$$S²' ;------------------------------------------------------------------------------ ; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96 ;------------------------------------------------------------------------------ ; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON ;------------------------------------------------------------------------------ Boolean BOOLEAN001 Boolean BOOLEAN002 Boolean BOOLEAN003 Boolean BOOLEAN004 Boolean BOOLEAN005 Boolean BOOLEAN006 Boolean BOOLEAN007 Boolean BOOLEAN008 Boolean BOOLEAN009 DWord TDWORD001(9) DWord DWORD002 Integer INTEGER001 Integer INTEGER002 Integer INTEGER003 Integer INTEGER004 Integer INTEGER005 Integer INTEGER006 Integer INTEGER007 Integer INTEGER008 Integer INTEGER009 Integer INTEGER010 Integer INTEGER011 Integer INTEGER012 Integer INTEGER013 Integer INTEGER014 String STRING001 String STRING002 String STRING003 String STRING004 String STRING005 String STRING006 String STRING007 String STRING008 String STRING009 String STRING010 String STRING011 String STRING012 String STRING013 String STRING014 String STRING015 String STRING016 String STRING017 String STRING018 String STRING020 String STRING022 String STRING024 Word WORD001 Word WORD002 Word TWORD003(9) Word WORD004 BigStr BIGSTR001 BigStr BIGSTR002 BigStr BIGSTR003 BigStr BIGSTR004 BigStr BIGSTR005 BigStr BIGSTR006 BigStr BIGSTR009 Declare Function FUNCTION001() BigStr Declare Function FUNCTION002() String Declare Function FUNCTION003(String STRING019) String Declare Function FUNCTION004() String Declare Function FUNCTION005(Word WORD008) BigStr Declare Function FUNCTION006(String STRING023) String Declare Procedure PROC001() Declare Procedure PROC002(Boolean BOOLEAN010) Declare Procedure PROC003(BigStr BIGSTR007, Word WORD005) Declare Procedure PROC004(String STRING021, Word WORD006) Declare Procedure PROC005() Declare Procedure PROC006() Declare Procedure PROC007() Declare Procedure PROC008(Int INT001) Declare Procedure PROC009() Declare Procedure PROC010(Int INT002, Int INT003) Declare Procedure PROC011(BigStr BIGSTR008, Word WORD007) Declare Procedure PROC012() Declare Procedure PROC013() Declare Procedure PROC014() Declare Procedure PROC015(BigStr BIGSTR010, Word WORD009) Declare Procedure PROC016(String STRING025) ;------------------------------------------------------------------------------ RdUNet PcbNode() WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", "" STRING013 = ReadLine(PPEPath() + "GROUP.CFG", 1) STRING015 = ReadLine(PPEPath() + "GROUP.CFG", 2) STRING014 = ReadLine(PPEPath() + "GROUP.CFG", 3) STRING016 = ReadLine(PPEPath() + "GROUP.CFG", 4) INTEGER012 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 5), 10) STRING017 = ReadLine(PPEPath() + "GROUP.CFG", 6) INTEGER013 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 7), 10) BOOLEAN006 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 8), 10) BOOLEAN007 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 9), 10) BOOLEAN008 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 10), 10) BOOLEAN009 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 11), 10) FClose -1 STRING009 = PPEPath() + "WORK\ORG.DAT" STRING010 = PPEPath() + "GROUP.LOG" STRING011 = PPEPath() + "WORK\FREEZE.SEM" STRING008 = GetToken() WORD001 = S2I(STRING008, 10) If ((WORD001 >= 3) && (WORD001 <= 10)) INTEGER006 = WORD001 PROC006() INTEGER004 = INTEGER011 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Delete PPEPath() + "WORK\ZAP." + String(INTEGER004) If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Delete PPEPath() + "WORK\PVT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\SWAP." + String(PcbNode()))) Delete PPEPath() + "WORK\SWAP." + String(PcbNode()) Cls StartDisp 1 PrintLn "@POFF@" PROC009() PROC001() INTEGER014 = Time() PROC004(" WeLCoMe iNTo THe AEGiS CoRP FuLL SCReeN MuLTI CHaT ! TyPE /? FoR HeLP!", INTEGER011) CdChkOff While (1) Do If (!CDOn() && !OnLocal()) Goto LABEL018 BIGSTR001 = FUNCTION001() If ((Upper(Left(BIGSTR001, 6)) == "/HELP ") || (Left(BIGSTR001, 3) == "/? ")) Then SaveScrn DispFile PPEPath() + "HELP", 0 + 4 CdChkOn Wait CdChkOff StartDisp 1 RestScrn Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/LOCK ") Then FOpen 1, PPEPath() + "WORK\LOCKED.SEM", 1, 0 FPutLn 1, "Chat is locked !" FClose 1 STRING008 = "Chat is now locked !" For WORD001 = 1 To INTEGER006 If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001) Next FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " LOCK THE CHAT" FClose 7 Continue Endif If (Upper(Left(BIGSTR001, 8)) == "/UNLOCK ") Then If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Delete PPEPath() + "WORK\LOCKED.SEM" STRING008 = "Chat is now unlocked !" For WORD001 = 1 To INTEGER006 If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001) Next Continue FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " UNLOCK THE CHAT" FClose 7 Endif If (Upper(Left(BIGSTR001, 5)) == "/WHO ") Then FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " WATCH NODE ACTIVITY" FClose 7 SaveScrn CdChkOn Call STRING015 CdChkOff Color 15 StartDisp 1 RdUNet PcbNode() WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", "" RestScrn Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/EDIT ") Then GetUser If (U_Sec < INTEGER013) Then PROC004("User editor is for sysop only !", INTEGER011) Goto LABEL001 Endif FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " USES THE USER EDITOR" FClose 7 SaveScrn CdChkOn Call STRING017 CdChkOff Color 15 StartDisp 1 RdUNet PcbNode() WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", "" RestScrn :LABEL001 Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/DOWN ") Then If (Mid(BIGSTR001, 7, 1) == " ") Then PROC004("Download a file : /DOWN filename", INTEGER011) Goto LABEL002 Endif STRING008 = Right(BIGSTR001, Len(BIGSTR001) - InStr(BIGSTR001, " ")) + " " STRING008 = Left(STRING008, InStr(STRING008, " ") - 1) PrintLn SaveScrn FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " DOWNLOAD " + STRING008 FClose 7 Download STRING008 RdUNet PcbNode() WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", "" RestScrn :LABEL002 Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/CALL ") Then If (Mid(BIGSTR001, 7, 1) == " ") Then PROC004("Call somenone : /CALL n (n = Node number)", INTEGER011) Goto LABEL003 Endif WORD001 = S2I(Mid(BIGSTR001, 7, 1), 10) If ((WORD001 == 0) || (WORD001 > MaxNode())) Then PROC004("There is no node " + String(WORD001), INTEGER011) Goto LABEL003 Endif FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " CALL NODE " + String(WORD001) FClose 7 RdUNet WORD001 STRING008 = UN_Name() + " has been notified !" If (Trim(STRING008, " ") == "") Then PROC004("There is curently nobody on node " + String(WORD001), INTEGER011) Goto LABEL003 Endif Broadcast WORD001, WORD001, PCBMac("@USER@") + " wants to chat with you ! Type " + STRING014 + " to answer." PROC004(STRING008, INTEGER011) :LABEL003 Continue Endif If (Upper(Left(BIGSTR001, 5)) == "/MAC ") Then STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Then PROC004("Macros : /MAC n MACRO (Record macro n) Or /n (Play macro n). 1 < n < 999", INTEGER011) Goto LABEL004 Endif BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6) BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " ")) PROC011(BIGSTR004, WORD001) PROC004("Macro " + String(WORD001) + " recorded !", INTEGER011) :LABEL004 Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/SEND ") Then STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Then PROC004("Send a broadcast message : /SEND n MSG (n = Node number)", INTEGER011) Goto LABEL005 Endif If (WORD001 > MaxNode()) Then PROC004("There is no node " + String(WORD001), INTEGER011) Goto LABEL005 Endif BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6) BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " ")) FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " SEND BROADCAST TO NODE " + String(WORD001) FPutLn 7, BIGSTR004 FClose 7 Broadcast WORD001, WORD001, BIGSTR004 PROC004("Broadcast sent !", INTEGER011) :LABEL005 Continue Endif If (Upper(Left(BIGSTR001, 5)) == "/ZAP ") Then If (BOOLEAN007) Goto LABEL006 PROC004("/ZAP has been disabled by the sysop !", INTEGER011) Goto LABEL007 :LABEL006 STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Then PROC004("Write for someone else : /ZAP n MESSAGE (n = Window to type in)", INTEGER011) Goto LABEL007 Endif WORD002 = TWORD003(WORD001 - 1) If (WORD002 == 0) Then PROC004("Nobody to zap in window #" + String(WORD001), INTEGER011) Goto LABEL007 Endif RdUNet WORD002 WORD002 = U_RecNum(UN_Name()) GetAltUser WORD002 WORD002 = U_Sec GetUser INTEGER009 = U_Sec If (INTEGER009 <= WORD002) Then PROC004(PCBMac("@USER@") + ", your security is not high enough to zap #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001) Goto LABEL007 Endif BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6) BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " ")) FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " ZAP COMMAND TO #" + String(WORD001) FPutLn 7, BIGSTR004 FClose 7 PROC015(BIGSTR004, WORD001) :LABEL007 Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/PLUG ") Then If (BOOLEAN008) Goto LABEL008 PROC004("/PLUG has been disabled by the sysop !", INTEGER011) Goto LABEL009 :LABEL008 STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Then PROC004("Write Directly into alternate window : /PLUG n MSG (n = Window to plug in)", INTEGER011) Goto LABEL009 Endif WORD002 = TWORD003(WORD001 - 1) If (WORD002 == 0) Then PROC004("Nobody to plug in window #" + String(WORD001), INTEGER011) Goto LABEL009 Endif RdUNet WORD002 WORD002 = U_RecNum(UN_Name()) GetAltUser WORD002 WORD002 = U_Sec GetUser INTEGER009 = U_Sec If (INTEGER009 <= WORD002) Then PROC004(PCBMac("@USER@") + ", your security is not high enough to plug #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001) Goto LABEL009 Endif BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6) BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " ")) FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " PLUG COMMAND TO #" + String(WORD001) FPutLn 7, BIGSTR004 FClose 7 PROC003(BIGSTR004, WORD001) :LABEL009 Continue Endif If (Upper(Left(BIGSTR001, 7)) == "/EJECT ") Then If (BOOLEAN009) Goto LABEL010 PROC004("/EJECT has been disabled by the sysop !", INTEGER011) Goto LABEL011 :LABEL010 STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Then PROC004("Eject a user from the chat : /EJECT n (n = Window # of user to eject)", INTEGER011) Goto LABEL011 Endif WORD002 = TWORD003(WORD001 - 1) If (WORD002 == 0) Then PROC004("Nobody to eject in window #" + String(WORD001), INTEGER011) Goto LABEL011 Endif RdUNet WORD002 WORD002 = U_RecNum(UN_Name()) GetAltUser WORD002 WORD002 = U_Sec GetUser INTEGER009 = U_Sec If (INTEGER009 <= WORD002) Then PROC004(PCBMac("@USER@") + ", your security is not high enough to eject #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001) Goto LABEL011 Endif FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " EJECT #" + String(WORD001) FClose 7 If (WORD001 == 10) WORD001 = 0 FOpen 1, PPEPath() + "WORK\EJECT." + I2S(WORD001, 10), 1, 0 FPutLn 1, "Go away !" FClose 1 :LABEL011 Continue Endif If (Left(BIGSTR001, 1) == "/") Then STRING008 = Mid(BIGSTR001, 1, 10) + " " STRING008 = Mid(STRING008, 2, InStr(STRING008, " ") - 2) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Goto LABEL012 BIGSTR001 = FUNCTION005(WORD001) If (BIGSTR001 == "") Continue Endif :LABEL012 If (Upper(Left(BIGSTR001, 5)) == "/PVT ") Then STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) If (STRING008 == "*") Then WORD001 = -1 Goto LABEL013 Endif WORD001 = S2I(STRING008, 10) :LABEL013 If (WORD001 == 0) Then PROC004("Send a private message : /PVT n MSG... (n = Window to send message to)", INTEGER011) Goto LABEL014 Endif STRING008 = PCBMac("@USER@") + ": " BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 5) BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " ")) STRING008 = Left(STRING008 + BIGSTR004, 80) If (WORD001 == -1) Then For WORD001 = 1 To INTEGER006 If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001) Next Endif If (TWORD003(WORD001 - 1)) Then PROC004(STRING008, WORD001) FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " PRIVATE TO #" + String(WORD001) FPutLn 7, STRING008 FClose 7 Goto LABEL014 Endif PROC004("There is nobody in window #" + String(WORD001), INTEGER011) :LABEL014 Continue Endif If (Upper(Left(BIGSTR001, 6)) == "/SWAP ") Then If (BOOLEAN006) Goto LABEL015 PROC004("/SWAP has been disabled by the sysop !", INTEGER011) Goto LABEL017 :LABEL015 STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3) STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1) WORD001 = S2I(STRING008, 10) If (WORD001 == 0) Then PROC004("SWAP two windows : /SWAP n (n = Window to swap with)", INTEGER011) Goto LABEL017 Endif WORD001 = S2I(Mid(BIGSTR001, 7, 2), 10) If (WORD001 <= INTEGER006) Then If (TWORD003(WORD001 - 1) == 0) Then If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER011))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER011) TWORD003(INTEGER011 - 1) = 0 TWORD003(WORD001 - 1) = PcbNode() FOpen 1, STRING009, 2, 3 FSeek 1, (INTEGER011 - 1) * 2, 0 FWrite 1, 0, 2 FSeek 1, (WORD001 - 1) * 2, 0 FWrite 1, ToWord(PcbNode()), 2 INTEGER011 = WORD001 PROC002(1) FClose 1 PROC005() PROC001() Goto LABEL016 Endif WORD002 = TWORD003(WORD001 - 1) RdUNet WORD002 WORD002 = U_RecNum(UN_Name()) GetAltUser WORD002 WORD002 = U_Sec GetUser INTEGER009 = U_Sec If (INTEGER009 <= WORD002) Then PROC004(PCBMac("@USER@") + ", your security is not high enough to swap with #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001) Goto LABEL016 Endif If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER011))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER011) PROC003("", INTEGER011) INTEGER009 = TWORD003(WORD001 - 1) FOpen 1, STRING009, 2, 3 FSeek 1, (INTEGER011 - 1) * 2, 0 FWrite 1, TWORD003(WORD001 - 1), 2 FSeek 1, (WORD001 - 1) * 2, 0 FWrite 1, ToWord(PcbNode()), 2 INTEGER011 = WORD001 PROC002(1) FClose 1 PROC005() PROC010(INTEGER009, INTEGER011) PROC001() :LABEL016 Goto LABEL017 Endif PROC004("This place is not available !", INTEGER011) :LABEL017 Continue Endif If (BOOLEAN002) Break If (BIGSTR001 == "") Continue PROC003(BIGSTR001, INTEGER011) EndWhile PROC007() PROC014() CdChkOn AnsiPos 1, 1 End :LABEL018 STRING008 = PCBMac("@USER@") + " - CARRIER LOST!" FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " - CARRIER LOST !" FPutLn 7, BIGSTR004 FClose 7 For WORD001 = 1 To INTEGER006 If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001) Next PROC007() PROC014() CdChkOn AnsiPos 1, 1 End ;------------------------------------------------------------------------------ Function FUNCTION002() String BigStr BIGSTR006 AnsiPos Len(STRING006) + 1, INTEGER003 + INTEGER002 - 1 BIGSTR002 = STRING006 BOOLEAN003 = 0 BOOLEAN002 = 0 BOOLEAN005 = 0 :LABEL019 If (!CDOn() && !OnLocal()) Return STRING007 = FUNCTION004() If (STRING007 <> "") Goto LABEL020 If ((INTEGER014 <> 0) && (Time() > INTEGER014 + 3)) Then PROC004("", INTEGER011) INTEGER014 = 0 Endif INTEGER004 = INTEGER011 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\READSEM." + String(INTEGER004))) Then INTEGER007 = GetX() INTEGER008 = GetY() PROC002(0) PROC001() Delete PPEPath() + "WORK\READSEM." + String(INTEGER004) AnsiPos INTEGER007, INTEGER008 Endif STRING007 = FUNCTION004() If (STRING007 <> "") Goto LABEL020 If (Exist(PPEPath() + "WORK\SWAP." + String(PcbNode()))) Then If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER011))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER011) PROC003("", INTEGER011) INTEGER007 = GetX() INTEGER008 = GetY() FOpen 1, PPEPath() + "WORK\SWAP." + String(PcbNode()), 0, 0 FGet 1, INTEGER011 FClose 1 PROC002(0) PROC001() Delete PPEPath() + "WORK\SWAP." + String(PcbNode()) AnsiPos INTEGER007, INTEGER008 Endif STRING007 = FUNCTION004() If (STRING007 <> "") Goto LABEL020 INTEGER004 = INTEGER011 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Then FOpen 1, PPEPath() + "WORK\ZAP." + String(INTEGER004), 0, 0 FGet 1, BIGSTR004 BIGSTR004 = ReplaceStr(BIGSTR004, "@ENTER@", Chr(13) + Chr(10)) BIGSTR003 = BIGSTR003 + BIGSTR004 FClose 1 Delete PPEPath() + "WORK\ZAP." + String(INTEGER004) Endif STRING007 = FUNCTION004() If (STRING007 <> "") Goto LABEL020 INTEGER004 = INTEGER011 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Then Color 15 INTEGER007 = GetX() INTEGER008 = GetY() FOpen 1, PPEPath() + "WORK\PVT." + String(INTEGER004), 0, 0 FGet 1, STRING012 AnsiPos 1, 1 PrintLn STRING012 + Space(79 - Len(STRING012)) FClose 1 Delete PPEPath() + "WORK\PVT." + String(INTEGER004) AnsiPos INTEGER007, INTEGER008 Endif STRING007 = FUNCTION004() If (STRING007 <> "") Goto LABEL020 INTEGER004 = INTEGER011 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\EJECT." + String(INTEGER004))) Then PROC007() PROC014() End Endif STRING007 = FUNCTION004() If (STRING007 <> "") Goto LABEL020 For INTEGER009 = 1 To 10 INTEGER004 = INTEGER009 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Then DWORD002 = Crc32(1, PPEPath() + "WORK\CHAT." + String(INTEGER004)) If (DWORD002 <> TDWORD001(INTEGER004)) Then TDWORD001(INTEGER004) = DWORD002 Color 15 INTEGER007 = GetX() INTEGER008 = GetY() FOpen 1, PPEPath() + "WORK\CHAT." + String(INTEGER004), 0, 0 For WORD002 = 1 To INTEGER001 FGet 1, STRING012 AnsiPos 1, WORD002 + 2 + INTEGER001 * (INTEGER009 - 1) + INTEGER009 - 1 If (Trim(STRING012, " ") == "") Then PrintLn Space(79) Continue Endif PrintLn STRING012 + Space(79 - Len(StripAtx(STRING012))) Next FClose 1 AnsiPos INTEGER007, INTEGER008 Endif Endif STRING007 = FUNCTION004() :LABEL020 If (STRING007 <> "") Then If (Len(STRING007) < 2) Then If (STRING007 == Chr(27)) Then BOOLEAN002 = 1 STRING007 = Chr(13) BOOLEAN005 = 0 Goto LABEL024 Endif If (STRING007 == Chr(13)) Then BOOLEAN005 = 1 Goto LABEL024 Endif If ((Asc(STRING007) > 31) && (Len(BIGSTR002) < 78)) Then Color 15 Print STRING007 BIGSTR002 = BIGSTR002 + STRING007 Goto LABEL022 Endif If (((Asc(STRING007) > 31) && (Len(BIGSTR002) == 78)) && BOOLEAN001) Then For INTEGER009 = Len(BIGSTR002) To 0 Step -1 If (Mid(BIGSTR002, INTEGER009, 1) == " ") Break Next If (STRING007 == " ") Then Goto LABEL024 Endif If (INTEGER009 == 0) Then BIGSTR003 = STRING007 Goto LABEL021 Endif Backup 78 - INTEGER009 Print Space(78 - INTEGER009) Backup 78 - INTEGER009 BIGSTR003 = Right(BIGSTR002, 78 - INTEGER009) + STRING007 BIGSTR002 = Mid(BIGSTR002, 1, INTEGER009 - 1) :LABEL021 Goto LABEL024 Endif :LABEL022 If (STRING007 == Chr(8)) Then If (Len(BIGSTR002) > 0) Then Backup 1 Print "@X07 " Backup 1 BIGSTR002 = Mid(BIGSTR002, 1, Len(BIGSTR002) - 1) Goto LABEL023 Endif If (BOOLEAN004) Then BOOLEAN003 = 1 Goto LABEL024 Endif Endif :LABEL023 Continue Endif If (STRING007 == "DOWN") Goto LABEL024 Endif Next Goto LABEL019 :LABEL024 FUNCTION002 = BIGSTR002 EndFunc ;------------------------------------------------------------------------------ Function FUNCTION001() BigStr For WORD001 = 1 To INTEGER001 AnsiPos 1, INTEGER003 + WORD001 - 1 ClrEol Next STRING001 = "" STRING002 = "" STRING003 = "" STRING004 = "" STRING005 = "" :LABEL025 INTEGER002 = 1 If (INTEGER001 > 1) Then BOOLEAN001 = 1 Else BOOLEAN001 = 0 Endif BOOLEAN004 = 0 STRING006 = STRING001 STRING001 = FUNCTION002() If (BOOLEAN005 || BOOLEAN002) Goto LABEL028 If (INTEGER001 == 1) Goto LABEL028 :LABEL026 INTEGER002 = 2 If (INTEGER001 > 2) Then BOOLEAN001 = 1 Else BOOLEAN001 = 0 Endif BOOLEAN004 = 1 STRING006 = STRING002 STRING002 = FUNCTION002() If (BOOLEAN003) Goto LABEL025 If (BOOLEAN005 || BOOLEAN002) Goto LABEL028 If (INTEGER001 == 2) Goto LABEL028 :LABEL027 INTEGER002 = 3 If (INTEGER001 > 2) Then BOOLEAN001 = 1 Else BOOLEAN001 = 0 Endif BOOLEAN004 = 1 STRING006 = STRING003 STRING003 = FUNCTION002() If (BOOLEAN003) Goto LABEL026 If (BOOLEAN005 || BOOLEAN002) Goto LABEL028 If (INTEGER001 == 3) Goto LABEL028 INTEGER002 = 4 BOOLEAN001 = 0 BOOLEAN004 = 1 STRING006 = STRING004 STRING004 = FUNCTION002() If (BOOLEAN003) Goto LABEL027 If (BOOLEAN005 || BOOLEAN002) Goto LABEL028 :LABEL028 If (BOOLEAN002) Then FUNCTION001 = "" Else STRING001 = FUNCTION003(STRING001) STRING002 = FUNCTION003(STRING002) STRING003 = FUNCTION003(STRING003) STRING004 = FUNCTION003(STRING004) STRING005 = FUNCTION003(STRING005) FUNCTION001 = STRING001 If (STRING002 <> "") Then FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING002 If (STRING003 <> "") Then FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING003 If (STRING004 <> "") Then FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING004 If (STRING005 <> "") Then FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING005 Endif Endif Endif Endif Endif EndFunc ;------------------------------------------------------------------------------ Procedure PROC001() For WORD002 = 1 To INTEGER006 If (TWORD003(WORD002 - 1)) Then If (WORD002 <> INTEGER011) Then RdUNet TWORD003(WORD002 - 1) AnsiPos 1, (WORD002 - 1) * INTEGER001 + 1 + WORD002 Print STRING013 PROC008((WORD002 - 1) * INTEGER001 + 1 + WORD002) AnsiPos 6, (WORD002 - 1) * INTEGER001 + 1 + WORD002 Print STRING016 + " @X0F" + String(WORD002) + " - " + FUNCTION006(UN_Name()) + " " + STRING016 Goto LABEL029 Endif AnsiPos 1, (WORD002 - 1) * INTEGER001 + 1 + WORD002 Print STRING013 PROC008((WORD002 - 1) * INTEGER001 + 1 + WORD002) AnsiPos 6, (WORD002 - 1) * INTEGER001 + 1 + WORD002 Print STRING016 + " @X0F" + String(WORD002) + " - " + FUNCTION006(PCBMac("@USER@")) + " " + STRING016 :LABEL029 Continue Endif AnsiPos 1, (WORD002 - 1) * INTEGER001 + 1 + WORD002 Print STRING013 INTEGER009 = (WORD002 - 1) * INTEGER001 + 2 + WORD002 While (((1 < 0) && (INTEGER009 >= (WORD002 - 1) * INTEGER001 + 2 + WORD002 + INTEGER001 - 1)) || ((1 >= 0) && (INTEGER009 <= (WORD002 - 1) * INTEGER001 + 2 + WORD002 + INTEGER001 - 1))) Do AnsiPos 1, INTEGER009 ClrEol INTEGER009 = INTEGER009 + 1 EndWhile Next EndProc ;------------------------------------------------------------------------------ Procedure PROC002(Boolean BOOLEAN010) If (!BOOLEAN010) FOpen 1, STRING009, 0, 3 WORD004 = 0 FSeek 1, 0, 0 For WORD002 = 1 To INTEGER006 FRead 1, WORD001, 2 If (WORD001 <> 0) Then TWORD003(WORD002 - 1) = WORD001 If (WORD001 == PcbNode()) INTEGER011 = WORD002 Inc WORD004 Continue Endif TWORD003(WORD002 - 1) = 0 Next If (!BOOLEAN010) FClose 1 EndProc ;------------------------------------------------------------------------------ Procedure PROC003(BigStr BIGSTR007, Word WORD005) INTEGER004 = WORD005 If (INTEGER004 == 10) INTEGER004 = 0 FCreate 1, PPEPath() + "WORK\CHAT." + String(INTEGER004), 1, 3 FPutLn 1, BIGSTR007 FClose 1 FAppend 7, STRING010, 1, 0 FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") FPutLn 7, BIGSTR007 FClose 7 EndProc ;------------------------------------------------------------------------------ Procedure PROC005() For WORD002 = 1 To INTEGER006 If (TWORD003(WORD002 - 1) && (WORD002 <> INTEGER011)) Then INTEGER004 = WORD002 If (INTEGER004 == 10) INTEGER004 = 0 FCreate 1, PPEPath() + "WORK\READSEM." + String(INTEGER004), 1, 0 FPutLn 1, "OrgFile changed... Reread requested." FClose 1 Endif Next EndProc ;------------------------------------------------------------------------------ Procedure PROC006() If (Exist(STRING009)) Goto LABEL031 If (Exist(STRING011)) Then PrintLn "@X0FPlease wait, a user on other node is creating group chat..." PrintLn "@X0FPress Esc to quit or wait for availability..." PrintLn Print "@X0F10" INTEGER009 = 10 INTEGER010 = Time() While (1) Do If (Exist(STRING011)) Then If (Time() >= INTEGER010 + 10) Break If (INTEGER009 <> INTEGER010 + 10 - Time()) Then INTEGER009 = INTEGER010 + 10 - Time() Print "·" + String(INTEGER009) STRING007 = Inkey() If (STRING007 == Chr(27)) End Endif EndWhile Endif If (Exist(STRING011)) Then PrintLn "·@X0CTimeout!" PrintLn PrintLn "@X0FCome back when the group chat is created..." End Endif Endif If (Exist(STRING009)) Goto LABEL031 PROC012() If (INTEGER006 == 0) Then INTEGER010 = 3 :LABEL030 InputInt "How many users (from 3 to 10) will be allowed ", INTEGER010, 15 PrintLn If ((INTEGER010 > 10) || ((INTEGER010 < 3) && (INTEGER010 <> 0))) Goto LABEL030 If (INTEGER010 == 0) Then PROC013() End Endif INTEGER006 = INTEGER010 Endif INTEGER011 = 1 FCreate 1, STRING009, 2, 3 FWrite 1, ToWord(PcbNode()), 2 For INTEGER009 = 2 To INTEGER006 FWrite 1, 0, 2 Next PROC002(1) FClose 1 PROC013() Goto LABEL032 :LABEL031 INTEGER010 = FileInf(STRING009, 4) INTEGER006 = INTEGER010 / 2 FOpen 1, STRING009, 2, 3 FSeek 1, 0, 0 For WORD002 = 1 To INTEGER006 FRead 1, WORD001, 2 If ((WORD001 == 0) || (WORD001 == PcbNode())) Break Next INTEGER005 = WORD002 If (WORD002 == INTEGER006 + 1) Then FClose 1 DispFile PPEPath() + "FULL", 0 + 4 PROC016(U_Name() + " knock at the door, but the chat is full!") End Endif PROC002(1) If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Then DispFile PPEPath() + "LOCKED", 0 + 4 PROC016(U_Name() + " knock at the door, but the chat is locked!") End Endif FAppend 7, STRING010, 1, 0 FPutLn 7, " --- " + String(Date()) + " - " + String(Time()) + " ---" FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " ENTERS THE MULTICHAT IN WINDOW #" + String(INTEGER005) FClose 7 INTEGER011 = INTEGER005 FSeek 1, (INTEGER011 - 1) * 2, 0 FWrite 1, ToWord(PcbNode()), 2 PROC002(1) FClose 1 PROC005() :LABEL032 EndProc ;------------------------------------------------------------------------------ Procedure PROC007() FAppend 7, STRING010, 1, 0 FPutLn 7, " --- " + String(Date()) + " - " + String(Time()) + " ---" FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " LEAVES THE MULTICHAT" FClose 7 FOpen 1, STRING009, 2, 3 FSeek 1, (INTEGER011 - 1) * 2, 0 FWrite 1, 0, 2 FClose 1 INTEGER004 = INTEGER011 If (INTEGER004 == 10) INTEGER004 = 0 If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Delete PPEPath() + "WORK\ZAP." + String(INTEGER004) If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Delete PPEPath() + "WORK\PVT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\READSEM." + String(INTEGER004))) Delete PPEPath() + "WORK\READSEM." + String(INTEGER004) If (Exist(PPEPath() + "WORK\EJECT." + String(INTEGER004))) Delete PPEPath() + "WORK\EJECT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\SWAP." + String(PcbNode()))) Delete PPEPath() + "WORK\SWAP." + String(PcbNode()) PROC005() PROC002(0) If (WORD004 == 0) Then Delete STRING009 For INTEGER004 = 0 To 9 If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Delete PPEPath() + "WORK\ZAP." + String(INTEGER004) If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Delete PPEPath() + "WORK\PVT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\READSEM." + String(INTEGER004))) Delete PPEPath() + "WORK\READSEM." + String(INTEGER004) If (Exist(PPEPath() + "WORK\EJECT." + String(INTEGER004))) Delete PPEPath() + "WORK\EJECT." + String(INTEGER004) If (Exist(PPEPath() + "WORK\SWAP." + String(INTEGER004))) Delete PPEPath() + "WORK\SWAP." + String(INTEGER004) Next If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Delete PPEPath() + "WORK\LOCKED.SEM" Endif EndProc ;------------------------------------------------------------------------------ Function FUNCTION003(String STRING019) String Int INT001 STRING019 = ReplaceStr(STRING019, "@AUTOMORE", "@automore") STRING019 = ReplaceStr(STRING019, "@BEEP", "@beep") STRING019 = ReplaceStr(STRING019, "@CLREOL", "@clreol") STRING019 = ReplaceStr(STRING019, "@CLS", "@cls") STRING019 = ReplaceStr(STRING019, "@DELAY", "@delay") STRING019 = ReplaceStr(STRING019, "@DELAY", "@delay") STRING019 = ReplaceStr(STRING019, "@MORE", "@more") STRING019 = ReplaceStr(STRING019, "@PAUSE", "@pause") STRING019 = ReplaceStr(STRING019, "@POFF", "@poff") STRING019 = ReplaceStr(STRING019, "@PON", "@pon") STRING019 = ReplaceStr(STRING019, "@POS", "@pos") STRING019 = ReplaceStr(STRING019, "@QOFF", "@qoff") STRING019 = ReplaceStr(STRING019, "@QON", "@qon") STRING019 = ReplaceStr(STRING019, "@WAIT", "@wait") STRING019 = ReplaceStr(STRING019, "@WHO", "@who") FUNCTION003 = STRING019 EndFunc ;------------------------------------------------------------------------------ Procedure PROC008(Int INT001) If (WORD004 > INTEGER012) Goto LABEL033 STRING008 = ScrText(1, INT001, 79, 1) AnsiPos 1, INT001 Print "@X08" + StripAtx(STRING008) Delay 1 AnsiPos 1, INT001 Print "@X07" + StripAtx(STRING008) Delay 1 AnsiPos 1, INT001 Print "@X0F" + StripAtx(STRING008) Delay 1 AnsiPos 1, INT001 Print "@X07" + StripAtx(STRING008) Delay 1 AnsiPos 1, INT001 Print "@X08" + StripAtx(STRING008) Delay 1 AnsiPos 1, INT001 Print STRING008 :LABEL033 EndProc ;------------------------------------------------------------------------------ Procedure PROC009() Select Case (INTEGER006) Case 3 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 7 PrintLn STRING013 AnsiPos 1, 12 PrintLn STRING013 AnsiPos 1, 17 PrintLn STRING013 INTEGER001 = 4 INTEGER003 = 18 Case 4 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 6 PrintLn STRING013 AnsiPos 1, 10 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 18 PrintLn STRING013 INTEGER001 = 3 INTEGER003 = 19 Case 5 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 5 PrintLn STRING013 AnsiPos 1, 8 PrintLn STRING013 AnsiPos 1, 11 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 17 PrintLn STRING013 INTEGER001 = 2 INTEGER003 = 18 Case 6 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 5 PrintLn STRING013 AnsiPos 1, 8 PrintLn STRING013 AnsiPos 1, 11 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 17 PrintLn STRING013 AnsiPos 1, 20 PrintLn STRING013 INTEGER001 = 2 INTEGER003 = 21 Case 7 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 4 PrintLn STRING013 AnsiPos 1, 6 PrintLn STRING013 AnsiPos 1, 8 PrintLn STRING013 AnsiPos 1, 10 PrintLn STRING013 AnsiPos 1, 12 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 16 PrintLn STRING013 INTEGER001 = 1 INTEGER003 = 17 Case 8 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 4 PrintLn STRING013 AnsiPos 1, 6 PrintLn STRING013 AnsiPos 1, 8 PrintLn STRING013 AnsiPos 1, 10 PrintLn STRING013 AnsiPos 1, 12 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 16 PrintLn STRING013 AnsiPos 1, 18 PrintLn STRING013 INTEGER001 = 1 INTEGER003 = 19 Case 9 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 4 PrintLn STRING013 AnsiPos 1, 6 PrintLn STRING013 AnsiPos 1, 8 PrintLn STRING013 AnsiPos 1, 10 PrintLn STRING013 AnsiPos 1, 12 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 16 PrintLn STRING013 AnsiPos 1, 18 PrintLn STRING013 AnsiPos 1, 20 PrintLn STRING013 INTEGER001 = 1 INTEGER003 = 21 Case 10 AnsiPos 1, 2 PrintLn STRING013 AnsiPos 1, 4 PrintLn STRING013 AnsiPos 1, 6 PrintLn STRING013 AnsiPos 1, 8 PrintLn STRING013 AnsiPos 1, 10 PrintLn STRING013 AnsiPos 1, 12 PrintLn STRING013 AnsiPos 1, 14 PrintLn STRING013 AnsiPos 1, 16 PrintLn STRING013 AnsiPos 1, 18 PrintLn STRING013 AnsiPos 1, 20 PrintLn STRING013 AnsiPos 1, 22 PrintLn STRING013 INTEGER001 = 1 INTEGER003 = 23 End Select EndProc ;------------------------------------------------------------------------------ Procedure PROC004(String STRING021, Word WORD006) INTEGER010 = WORD006 If (INTEGER010 == 10) INTEGER010 = 0 FCreate 1, PPEPath() + "WORK\PVT." + I2S(INTEGER010, 10), 1, 0 FPutLn 1, STRING021 FClose 1 INTEGER010 = INTEGER011 If (INTEGER010 == 10) INTEGER010 = 0 If (INTEGER011 <> WORD006) Then FCreate 1, PPEPath() + "WORK\PVT." + I2S(INTEGER010, 10), 1, 0 FPutLn 1, STRING021 FClose 1 Endif EndProc ;------------------------------------------------------------------------------ Procedure PROC010(Int INT002, Int INT003) FCreate 1, PPEPath() + "WORK\SWAP." + String(INT002), 1, 0 FPutLn 1, INT003 FClose 1 EndProc ;------------------------------------------------------------------------------ Function FUNCTION004() String BigStr BIGSTR008 If (BIGSTR003 == "") Then STRING007 = Inkey() Else STRING007 = Left(BIGSTR003, 1) BIGSTR003 = Mid(BIGSTR003, 2, Len(BIGSTR003) - 1) Endif FUNCTION004 = STRING007 EndFunc ;------------------------------------------------------------------------------ Procedure PROC011(BigStr BIGSTR008, Word WORD007) STRING008 = I2S(Crc32(0, U_Name()), 16) If (Exist(PPEPath() + "DATA\" + STRING008 + ".DAT")) Goto LABEL034 Copy PPEPath() + "DATA\DEFAULT.DAT", PPEPath() + "DATA\" + STRING008 + ".DAT" Goto LABEL035 :LABEL034 FOpen 1, PPEPath() + "DATA\" + STRING008 + ".DAT", 0, 0 :LABEL035 If (Exist(PPEPath() + "WORK\TEMP.$$$")) Delete PPEPath() + "TEMP.$$$" FCreate 2, PPEPath() + "WORK\TEMP.$$$", 1, 0 BIGSTR008 = ReplaceStr(BIGSTR008, Chr(13) + Chr(10), "@ENTER@") For WORD001 = 1 To WORD007 - 1 FGet 1, BIGSTR005 FPutLn 2, BIGSTR005 Next FPutLn 2, BIGSTR008 FGet 1, BIGSTR005 If (Ferr(1)) Goto LABEL036 While (1) Do FGet 1, BIGSTR005 If (Ferr(1)) Break FPutLn 2, BIGSTR005 EndWhile :LABEL036 FClose 1 FClose 2 Delete PPEPath() + "DATA\" + STRING008 + ".DAT" Rename PPEPath() + "WORK\TEMP.$$$", PPEPath() + "DATA\" + STRING008 + ".DAT" EndProc ;------------------------------------------------------------------------------ Function FUNCTION005(Word WORD008) BigStr BigStr BIGSTR010 STRING008 = I2S(Crc32(0, U_Name()), 16) If (Exist(PPEPath() + "DATA\" + STRING008 + ".DAT")) Goto LABEL037 Copy PPEPath() + "DATA\DEFAULT.DAT", PPEPath() + "DATA\" + STRING008 + ".DAT" :LABEL037 BIGSTR005 = ReadLine(PPEPath() + "DATA\" + STRING008 + ".DAT", WORD008) FClose -1 If (BIGSTR005 == "") Then PROC004(String(WORD008) + ": Empty macro", INTEGER011) Endif FUNCTION005 = ReplaceStr(BIGSTR005, "@ENTER@", Chr(13) + Chr(10)) EndFunc ;------------------------------------------------------------------------------ Procedure PROC015(BigStr BIGSTR010, Word WORD009) INTEGER010 = WORD009 If (INTEGER010 == 10) INTEGER010 = 0 FCreate 1, PPEPath() + "WORK\ZAP." + String(INTEGER010), 1, 0 BIGSTR010 = ReplaceStr(BIGSTR010, Chr(13) + Chr(10), "@ENTER@") FPutLn 1, BIGSTR010 FClose 1 EndProc ;------------------------------------------------------------------------------ Procedure PROC012() FCreate 1, STRING011, 1, 3 FPutLn 1, "Hold on!" FClose 1 EndProc ;------------------------------------------------------------------------------ Procedure PROC013() If (Exist(STRING011)) Delete STRING011 EndProc ;------------------------------------------------------------------------------ Procedure PROC014() Color 15 Cls AnsiPos 33, 11 Color 8 Gosub LABEL038 Color 7 Gosub LABEL038 Color 15 Gosub LABEL038 Color 7 Gosub LABEL038 Color 8 Gosub LABEL038 Color 15 Print " " Goto LABEL039 :LABEL038 Print "<┤EGiS CoRP'94" Delay 2 Backup 14 Return :LABEL039 EndProc ;------------------------------------------------------------------------------ Function FUNCTION006(String STRING023) String String STRING025 STRING008 = Upper(STRING023) STRING008 = Replace(STRING008, "A", "a") STRING008 = Replace(STRING008, "E", "e") STRING008 = Replace(STRING008, "I", "i") STRING008 = Replace(STRING008, "O", "o") STRING008 = Replace(STRING008, "U", "u") FUNCTION006 = STRING008 EndFunc ;------------------------------------------------------------------------------ Procedure PROC016(String STRING025) STRING008 = STRING025 For WORD001 = 1 To INTEGER006 If (TWORD003(WORD001 - 1)) Then INTEGER010 = WORD001 If (INTEGER010 == 10) INTEGER010 = 0 FCreate 2, PPEPath() + "WORK\PVT." + I2S(INTEGER010, 10), 1, 0 FPutLn 2, STRING008 FClose 2 Endif Next EndProc ;------------------------------------------------------------------------------ ; ; Usage report (before postprocessing) ; ; ■ Statements used : ; ; 8 End ; 2 Cls ; 2 ClrEol ; 1 Wait ; 12 Color ; 242 Goto ; 287 Let ; 18 Print ; 72 PrintLn ; 197 If ; 3 DispFile ; 10 FCreate ; 12 FOpen ; 15 FAppend ; 40 FClose ; 7 FGet ; 36 FPutLn ; 4 StartDisp ; 5 GetUser ; 29 Delete ; 1 InputInt ; 5 Gosub ; 2 Return ; 5 CdChkOn ; 4 CdChkOff ; 6 Delay ; 1 Inc ; 2 Call ; 2 Broadcast ; 10 RdUNet ; 4 WrUNet ; 83 AnsiPos ; 5 Backup ; 4 SaveScrn ; 4 RestScrn ; 1 Rename ; 8 FSeek ; 2 FRead ; 8 FWrite ; 2 Copy ; 1 Download ; 4 GetAltUser ; 16 EndProc ; 6 EndFunc ; ; ; ■ Functions used : ; ; 7 - ; 17 * ; 1 / ; 353 + ; 75 - ; 80 == ; 19 <> ; 21 < ; 23 <= ; 11 > ; 36 >= ; 126 ! ; 43 && ; 25 || ; 21 Len( ; 15 Upper() ; 24 Mid() ; 19 Left() ; 12 Right() ; 4 Space() ; 2 Ferr() ; 21 Chr() ; 2 Asc() ; 22 InStr() ; 2 Trim() ; 2 Date() ; 8 Time() ; 4 U_Name() ; 6 StripAtx() ; 5 Replace() ; 2 Inkey() ; 92 String() ; 98 PPEPath() ; 22 PcbNode() ; 12 ReadLine() ; 2 OnLocal() ; 10 UN_Name() ; 4 UN_City() ; 1 GetToken() ; 37 Exist() ; 6 I2S() ; 17 S2I() ; 2 CDOn() ; 4 GetX() ; 4 GetY() ; 1 FileInf() ; 2 MaxNode() ; 4 U_RecNum() ; 1 ScrText() ; 19 ReplaceStr() ; 4 ToWord() ; 3 Crc32() ; 23 PCBMac() ; ;------------------------------------------------------------------------------ ; ; Analysis flags : RC ; ; R - Read user ■ 5 ; User records are read, this may signify that someone wants to get ; various informations about a user (for example his password), but ; this may also be normal for a program accessing user records (for ; example a User Editor) ; ■ Search for : GETALTUSER ; ; C - Call child PPE ■ 3 ; This is usually normal, but may be a tricky way to launch some ; sysop-only commands. ; ■ Search for : CALL ; ;------------------------------------------------------------------------------ ; ; Postprocessing report ; ; 16 For/Next ; 4 While/EndWhile ; 85 If/Then or If/Then/Else ; 1 Select Case ; ;------------------------------------------------------------------------------ ; AEGiS Corp - Break the routines, code against the machines! ;------------------------------------------------------------------------------